<?php

/**
 * personal actions.
 *
 * @package    cronos-doctrine
 * @subpackage personal
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class opegresosActions extends sfActions
{
    
    public function executeCalendario(sfWebRequest $request)
  {
      
        
        $camionetaEgresos = new OperadoresEgresos();
        $this->camionetaEgresos = $camionetaEgresos->getOperadoresEgresosMes();
      
      
      $camioneta        = new Camioneta();
      $this->camionetas  = $camioneta->getCamionetas();
      
      $this->saldo_temporal                 = new SaldoTemporal();
      
      
    
  }
  
    public function executeCalendarioGeneral(sfWebRequest $request)
  {
      
        
     
      
      
    
  }
  
  public function executeIndex(sfWebRequest $request)
  {
      
      
      
      
      
      $this->fecha = $request->getParameter('fecha');
      $this->operador_id = $request->getParameter('operador_id');
      
      
      $operadores_egresos           = new OperadoresEgresos();
      $this->operadores_egresos     = $operadores_egresos->getOperadoresEgresos($this->fecha,$this->operador_id);
      
      $operadores_ingresos          = new OperadoresIngreso();
      $this->operadores_ingresos    = $operadores_ingresos->getOperadoresIngresos($this->operador_id,$this->fecha);
      
      $saldo_temporal                 = new SaldoTemporal();
      $this->saldo_temporal_fechas    = $saldo_temporal->getSaldoTemporalFecha($this->operador_id);
      $this->saldo_temporal_dias        = $saldo_temporal->getSaldoTemporalDia($this->operador_id,$this->fecha);
      $this->saldo_temporal_dias_saldos = $saldo_temporal->getSaldoTemporalDiaSaldo($this->operador_id,$this->fecha);
      
      $empresa_ingreso              = new EmpresaIngreso();
      $this->empresa_ingresos       = $empresa_ingreso->getEmpresaIngresoDia($this->operador_id,$this->fecha);
      
      $fecha = $this->fecha;
      $nuevafecha = strtotime ( '-1 day' , strtotime ( $fecha ) ) ;
      $nuevafecha = date ( 'Y-m-j' , $nuevafecha );
      
      $this->operadores_egresos_de = $operadores_egresos->getOperadoresEgresosFecha($nuevafecha,$this->operador_id);
      
      
      
      $this->filtros = new OperadoresEgresosFormFilter();
      
    
  }
  
   public function executePago(sfWebRequest $request)
  {
       
       
      $fecha        = $request->getParameter('fecha');
      $operador_id  = $request->getParameter('operador_id');
      $monto_total  = $request->getParameter('monto_total');
      $ahorro       = $request->getParameter('ahorro');
      
      
      
      if($request->getParameter('monto_total')){
          
          
          $operadores_egresos = new OperadoresEgresos();
          $operadores_egresos = $operadores_egresos->getOperadoresEgresosFecha($fecha,$operador_id);
          
          $deuda = 0;
          foreach ($operadores_egresos as $operadores_egreso){
           
              //echo $operadores_egreso->getMonto().'=>'.$monto_total."<br>";
              
              $operador_egresos_id = $operadores_egreso->getId();
              
              //Validando si paga menos
              if($monto_total>($operadores_egreso->getMonto()-$operadores_egreso->getMontoPago()))
              $deuda = $operadores_egreso->getMonto();
              else
              $deuda = $monto_total;
              
              
              $monto_total = $monto_total + $operadores_egreso->getMontoPago();
              
              if($monto_total>0)
              $monto_total = $monto_total - $deuda;
             
              $operador  = Doctrine_Query::create()
                        ->set('oe.monto_pago','"'.$deuda.'"')
                        ->update('OperadoresEgresos oe')
                        ->where('oe.id = "'.$operador_egresos_id.'"')
                        ->execute();
           
              if($operadores_egreso->getOperadoresPrestamosId()>0){
                
                  echo $operadores_egreso->getOperadoresPrestamos()->getMontoPagado();
                  
                  $operador  = Doctrine_Query::create()
                        ->set('op.monto_pagado', '"'.($deuda+$operadores_egreso->getOperadoresPrestamos()->getMontoPagado()).'"')
                        ->update('OperadoresPrestamos op')
                        ->where('op.id = "'.$operadores_egreso->getOperadoresPrestamosId().'"')
                        ->execute();  
                  
              }
              
              
          
          }
          
            
             //Si queda sobrante de dinero 
                if(($monto_total>0)||($ahorro>0)){
                    
                    $saldoTemporal = new SaldoTemporal();
                    $saldoTemporal->setConceptoCfId(1);
                    $saldoTemporal->setEmpresaId($this->getUser()->getAttribute('agente_user_empresa_id'));
                    $saldoTemporal->setOperadorId($operador_id);
                    
                        if($ahorro>0){
                            
                            $saldoTemporal->setConcepto('Monto descontado , '.$fecha.' por un monto de: '.number_format($monto,2,',','.'));
                            $saldoTemporal->setTipo(2);
                            $saldoTemporal->setMonto($ahorro);
                            
                        }else{
                            
                            $saldoTemporal->setConcepto('Monto recibido adicional, '.$fecha.' por un monto de: '.number_format($monto,2,',','.'));
                            $saldoTemporal->setTipo(1);
                            $saldoTemporal->setMonto($monto_total);
                            
                        }

                    $saldoTemporal->setFecha($fecha);
                    $saldoTemporal->save();
                    
                }
          
                    

                
                
                //Recepcion de los montos 
                $empresa_ingreso_monto          = explode(",",$request->getParameter('empresa_ingreso_monto'));
                $empresa_ingreso_cliente_id     = explode(",",$request->getParameter('empresa_ingreso_cliente_id'));
                $empresa_ingreso_pago_id        = explode(",",$request->getParameter('empresa_ingreso_pago_id'));
                $empresa_ingreso_banco_id       = explode(",",$request->getParameter('empresa_ingreso_banco_id'));
                $empresa_ingreso_numero_cheque  = explode(",",$request->getParameter('empresa_ingreso_numero_cheque'));
                $empresa_ingreso_status         = explode(",",$request->getParameter('empresa_ingreso_status'));
                
                
           
      
                for($i=1;$i<count($empresa_ingreso_monto);$i++){

                        $empresaIngreso = new EmpresaIngreso();
                        $empresaIngreso->setDivisionId(2);
                        $empresaIngreso->setConceptoCfId(1);
                        $empresaIngreso->setEmpresaId($this->getUser()->getAttribute('agente_user_empresa_id'));
                        $empresaIngreso->setOperadorId($operador_id);
                        $empresaIngreso->setClienteId($empresa_ingreso_cliente_id[$i]);
                        $empresaIngreso->setServicioTipoId(1);
                        $empresaIngreso->setCantidad(1);
                        $empresaIngreso->setPagoId($empresa_ingreso_pago_id[$i]);
                        $empresaIngreso->setBancoId($empresa_ingreso_banco_id[$i]);
                        $empresaIngreso->setNumeroCheque($empresa_ingreso_numero_cheque[$i]);
                        $empresaIngreso->setMonto($empresa_ingreso_monto[$i]);
                        $empresaIngreso->setFecha($fecha.' '.date('h:i:s'));
                        $empresaIngreso->setStatus($empresa_ingreso_status[$i]);
                        $empresaIngreso->setCreatedAt(date('Y-m-d h:i:m'));
                        $empresaIngreso->setUpdatedAt(date('Y-m-d h:i:m'));
                        $empresaIngreso->save();
                 
                        
                        
                }
      
      
          
          
             
                
                //Resta de los ahorros del operador
                
                
          
       
      }
      
      
      
      $this->redirect('opegresos/index?fecha='.$fecha.'&operador_id='.$operador_id);
      
      
    
  }

  
  public function executeResumen(sfWebRequest $request)
  {
      
      $this->fecha = $request->getParameter('fecha');
      
      $camioneta        = new Camioneta();
      $this->camionetas  = $camioneta->getCamionetas();
      
      $operadores_egresos           = new OperadoresEgresos();
      $this->operadores_egresos     = $operadores_egresos->getOperadoresEgresosPorFecha($this->fecha);
      $this->camionetaEgresos       = $operadores_egresos->getOperadoresEgresosMesTotal();
      
      $saldo_temporal               = new SaldoTemporal();
      $this->saldo_temporales       = $saldo_temporal->getSaldoTemporal();
      
      $empresa_ingreso              = new EmpresaIngreso();
      $this->empresa_ingresos       = $empresa_ingreso->getEmpresaIngresoCierre($this->fecha);
      
      
    
  }
  
  
  public function executeNew(sfWebRequest $request)
  {
    $this->form = new OperadoresEgresosForm();
    
    $this->fecha        = $request->getParameter('fecha');
    $this->operador_id  = $request->getParameter('operador_id');
      
    
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new OperadoresEgresosForm();

    $this->processForm($request, $this->form);
    
    $this->fecha        = $request->getParameter('fecha');
    $this->operador_id  = $request->getParameter('operador_id');

    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($operadores_egresos = Doctrine_Core::getTable('OperadoresEgresos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresEgresos does not exist (%s).', $request->getParameter('id')));
    $this->form = new OperadoresEgresosForm($operadores_egresos);
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($operadores_egresos = Doctrine_Core::getTable('OperadoresEgresos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresEgresos does not exist (%s).', $request->getParameter('id')));
    $this->form = new OperadoresEgresosForm($operadores_egresos);

    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($operadores_egresos = Doctrine_Core::getTable('OperadoresEgresos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresEgresos does not exist (%s).', $request->getParameter('id')));
    $operadores_egresos->delete();
    $this->fecha        = $request->getParameter('fecha');
      $this->operador_id  = $request->getParameter('operador_id');
    
    $this->redirect('opegresos/index?fecha='.$fecha);
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $operadores_egresos = $form->save();
      
      $this->fecha        = $request->getParameter('fecha');
      $this->operador_id  = $request->getParameter('operador_id');
      
      $this->redirect('opegresos/edit?fecha='.$fecha.'&operador_id='.$operador_id.'&id='.$operadores_egresos->getId());
      
    }
  }
  
  
}
